From 77721eb79fe58d44da4698b9f560b4b8d842a539 Mon Sep 17 00:00:00 2001 From: "kaf24@scramble.cl.cam.ac.uk" Date: Mon, 22 Mar 2004 08:05:03 +0000 Subject: [PATCH] bitkeeper revision 1.814 (405e9e2f2N33e61cODYJiwTCPjf5Cw) memory.c: Fix broken fix from yesterday. :-) --- xen/common/memory.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/xen/common/memory.c b/xen/common/memory.c index bf61820af5..7d218f868b 100644 --- a/xen/common/memory.c +++ b/xen/common/memory.c @@ -776,6 +776,7 @@ static int do_extended_command(unsigned long ptr, unsigned long val) int okay = 1, cpu = smp_processor_id(); unsigned int cmd = val & MMUEXT_CMD_MASK; unsigned long pfn = ptr >> PAGE_SHIFT; + unsigned long old_base_pfn; struct pfn_info *page = &frame_table[pfn]; switch ( cmd ) @@ -831,10 +832,10 @@ static int do_extended_command(unsigned long ptr, unsigned long val) { invalidate_shadow_ldt(); percpu_info[cpu].deferred_ops &= ~DOP_FLUSH_TLB; + old_base_pfn = pagetable_val(current->mm.pagetable) >> PAGE_SHIFT; current->mm.pagetable = mk_pagetable(pfn << PAGE_SHIFT); - write_cr3_counted(pagetable_val(current->mm.pagetable)); - put_page_and_type(&frame_table[pagetable_val(current->mm.pagetable) - >> PAGE_SHIFT]); + write_cr3_counted(pfn << PAGE_SHIFT); + put_page_and_type(&frame_table[old_base_pfn]); } else { -- 2.30.2